package top.fyxxxx.dbdesign.util;

import top.fyxxxx.dbdesign.data.Course;

import java.util.List;

public interface CourseManager {
    /**
     * 创建课程
     * @param uid 账户编号
     * @param name 课程名
     * @return 课程id
     */
    long createCourse(long uid,String name);

    /**
     * 销毁课程
     * @param uid 账户编号
     * @param cid 课程编号
     * @return 是否成功
     */
    boolean destroyCourse(long uid,long cid);

    /**
     * 加入课程
     */
    boolean joinCourse(long uid,long cid);

    /**
     * 退出/解散（创建者，权限第0位判别）课程
     */
    boolean exitCourse(long uid,long cid);

    /**
     * 设置管理员（可以发布修改任务，由权限第1位判别）
     * @param uid 发起者uid，权限第0位为1可设置管理员
     * @param who 被设置者uid
     * @param cid 课程id
     * @return 是否成功
     */
    boolean setAdmin(long uid,long who,long cid);

    /**
     * 移除管理员（可以发布修改任务，由权限第1位判别）
     * @param uid 发起者uid，权限第0位为1可移除管理员
     * @param who 被移除者uid
     * @param cid 课程id
     * @return 是否成功
     */
    boolean removeAdmin(long uid,long who,long cid);

    /**
     * 搜索课程
     * @param exp 正则表达式
     * @return
     */
    List<Course> searchCourse(String exp);

    List<Course> getPowerCourse(long uid);

}
